package com.lqk.visitor;

/**
 * @author lqk
 * @date 2021/12/9 14:15
 *
 * 说明：
 *  这里我们使用到了双分派，即首先在客户端程序中，将具体的状态作为参数传递Woman中(第一 次分派)
 *  然后Woman类调用作为参数的“具体方法"中方法getWomanResult, 同时将自己(this )作为参数
 *  传入，完成第二次的分派
 *
 * 上面提到了双分派，所谓双分派是指不管类怎么变化，我们都能找到期望的方法运行。
 * 双分派意味着得到执行的操作取决于请求的种类和两个接收者的类型 - 以上述实例为例，假设我们要添加一个Wait的状态类，考察Man类和Woman类的反
 * 应，由于使用了双分派，只需增加一个Action子类即可在客户端调用即可，不
 * 需要改动任何其他类的代码。
 */
public class Woman extends Person {
    @Override
    public void accept(Action action) {
        action.getWomanResult(this);
    }
}
